import geopandas as gpd
import matplotlib.pyplot as plt
import pandas as pd
import sqlite3
import folium
import numpy as np
from IPython.display import display, HTML
#display(HTML("<style>.container {width:100% !important;}</style>"))
garagens = gpd.read_file('Garagens_de_operadores_do_Serviço_Público_de_Transporte_Coletivo_de_Passageiros_por_Ônibus_(SPPO)_no_Município_do_Rio_de_Janeiro_em_2021_2022-07-09-09-27-23.geojson')
garagens
| fid | operador | endereco | bairro | globalid | shape__Area | shape__Length | geometry | |
|---|---|---|---|---|---|---|---|---|
| 0 | 1 | Rodoviária A. Matias | Rua Doutor Bulhões, 766 | Engenho de Dentro | 487f632a-d751-4a99-ac5c-601aa4fc6c65 | 11857.516602 | 565.686811 | POLYGON ((-43.29968 -22.90235, -43.29953 -22.9... |
| 1 | 2 | Expresso Recreio | Estrada Rio do A, 1500 | Campo Grande | 5f4327ba-d756-4a1a-a30a-0824159b5e0d | 49440.964844 | 1075.244637 | POLYGON ((-43.56033 -22.89690, -43.56104 -22.8... |
| 2 | 3 | BRT Rio | Rua Barreiros, 21 | Ramos | b4018fc5-f38b-42a4-8529-acf66618d842 | 12902.643555 | 475.996946 | POLYGON ((-43.25234 -22.85452, -43.25232 -22.8... |
| 3 | 4 | Auto Viação Tijuca | Estrada dos Bandeirantes, 5900 | Curicica | 6b164adc-07d5-48c7-85fc-5b75d2e320b4 | 32569.469727 | 907.985654 | POLYGON ((-43.39606 -22.96136, -43.39617 -22.9... |
| 4 | 5 | Transportes Barra | Rua General Canrobert Pereira da Costa, 536 | Magalhães Bastos | c38355cb-e86e-443a-8938-053b67da2376 | 24602.004883 | 682.468414 | POLYGON ((-43.42063 -22.87614, -43.42017 -22.8... |
| 5 | 6 | Viação Vila Real | Rua Saravatá, 210 | Marechal Hermes | 0cec1713-13c8-421f-87b8-4a3a0e8fefa7 | 30811.953125 | 1018.732133 | POLYGON ((-43.37181 -22.85692, -43.37102 -22.8... |
| 6 | 7 | Viação Novacap | Avenida Jambeiro, 9 | Marechal Hermes | 3c036646-9683-49c5-8800-436e3e3e0ae3 | 4681.967773 | 310.060900 | POLYGON ((-43.36907 -22.87766, -43.36917 -22.8... |
| 7 | 8 | GIRE Transportes | Avenida Itaoca, 362 | Bonsucesso | 52a2f2fe-3033-4bc1-8337-de0e90b458bb | 5862.266602 | 334.667388 | POLYGON ((-43.25906 -22.86737, -43.25895 -22.8... |
| 8 | 9 | Viação Nossa Senhora das Graças; Viação Verdun | Rua Leopoldo, 708 | Andaraí | d1933499-3e59-4831-8063-1f1d2bf22c81 | 16761.634766 | 721.958519 | POLYGON ((-43.25362 -22.92994, -43.25440 -22.9... |
| 9 | 10 | Real Auto Ônibus | Avenida Brasil, 4200 | Maré | 63444707-df53-442e-a13c-ac53cd3f9864 | 54025.920898 | 947.517567 | POLYGON ((-43.24177 -22.87353, -43.24173 -22.8... |
| 10 | 11 | Viação Pavunense | Avenida Chrisóstomo Pimentel de Oliveira, 699 | Anchieta | 09fba444-420b-4010-9412-7fe99811faef | 18225.459961 | 875.913581 | POLYGON ((-43.39484 -22.81562, -43.39272 -22.8... |
| 11 | 12 | Expresso Pégaso; Auto Viação Palmares; BRT Rio | Avenida Cesário de Melo, 8121 | Cosmos | 5fea0bda-d41a-449d-8617-9c8aa44904d1 | 103868.670898 | 1529.689077 | POLYGON ((-43.60851 -22.91611, -43.60841 -22.9... |
| 12 | 13 | Viação Nossa Senhora de Lourdes | Rua Capitão Vicente, 54 | Penha Circular | 2ff7f28b-d7b4-4287-8174-84a00885eeaa | 8921.528320 | 547.133961 | POLYGON ((-43.28594 -22.83586, -43.28541 -22.8... |
| 13 | 14 | Viação VG | Rua Valentim Magalhães, 10 | Vigário Geral | 5a57ce00-fe71-4f40-b364-73debc860903 | 34310.438477 | 888.381941 | POLYGON ((-43.31163 -22.80381, -43.30946 -22.8... |
| 14 | 15 | Viação Penha Rio | Avenida Itaoca, 149/187 | Bonsucesso | a08c074b-ef75-471b-b7f1-b00af995d7bb | 5739.117188 | 347.244290 | POLYGON ((-43.25738 -22.86868, -43.25739 -22.8... |
| 15 | 16 | Viação Pavunense | Avenida Chrisóstomo Pimentel de Oliveira, 1415 | Pavuna | 805fa47d-8ffe-4f7e-a332-037e0db14168 | 13697.675781 | 496.189718 | POLYGON ((-43.38727 -22.81488, -43.38696 -22.8... |
| 16 | 17 | Viação Ideal | Avenida Coronel Luiz de Oliveira Sampaio, 180 | Cacuia | 91522abf-c41c-44be-adf5-057f4c98140c | 18034.886719 | 664.698232 | POLYGON ((-43.18790 -22.81629, -43.18808 -22.8... |
| 17 | 18 | Transportes Paranapuan | Estrada do Galeão, 178 | Cacuia | 39726afe-08bd-4440-afc2-e5f0c81e46fa | 24257.089844 | 697.195889 | POLYGON ((-43.18827 -22.81469, -43.18754 -22.8... |
| 18 | 19 | Caprichosa Auto Ônibus | Rua Bulhões Marcial, 361 | Parada de Lucas | cbbc5b02-61c2-45f1-a71b-edd13d90989e | 17823.673828 | 674.576272 | POLYGON ((-43.30265 -22.81718, -43.30256 -22.8... |
| 19 | 20 | Auto Viação Tijuca | Rua Leopoldo, 610 | Andaraí | c39f5045-ea73-4233-bf37-3cea61467475 | 14703.331055 | 678.194617 | POLYGON ((-43.25353 -22.92984, -43.25418 -22.9... |
| 20 | 21 | Viação Novacap | Estrada Intendente Magalhães, 1154 | Marechal Hermes | e665e1b0-348d-4520-b6ab-2e0c9551b481 | 12683.822266 | 447.169309 | POLYGON ((-43.36781 -22.87613, -43.36779 -22.8... |
| 21 | 22 | Auto Viação Alpha | Rua Condessa Belmonte, 445 | Engenho Novo | dc37c8c3-fba9-4779-90b6-88816a6c16fa | 13041.007812 | 564.444231 | POLYGON ((-43.27089 -22.91011, -43.27060 -22.9... |
| 22 | 23 | Real Auto Ônibus | Rua Vinte e Nove de Julho, 357 | Maré | d966faff-dd6b-4d09-95fe-f0ccb24712f5 | 14816.834961 | 500.713519 | POLYGON ((-43.24527 -22.85813, -43.24539 -22.8... |
| 23 | 24 | Rodoviária A. Matias | Rua Doutor Bulhões, 737 | Engenho de Dentro | cf2c0fa5-cf8c-4d23-bc50-0ead0d901714 | 4348.466797 | 265.054724 | POLYGON ((-43.29814 -22.90226, -43.29751 -22.9... |
| 24 | 25 | Empresa de Transportes Braso Lisboa | Avenida Pastor Martin Luther King Júnior, 3700 | Inhaúma | 608c9efb-7fab-4f97-bbe5-4e2c66f91ec8 | 46654.675781 | 1101.948681 | POLYGON ((-43.28961 -22.86777, -43.29139 -22.8... |
| 25 | 26 | Viação Acari | Rua Miguel Rangel, 493 | Madureira | 1899a524-bcc6-4b75-bf2e-8a911d19a098 | 17628.322266 | 527.072613 | POLYGON ((-43.33063 -22.87615, -43.32968 -22.8... |
| 26 | 27 | Transportes Barra | Estrada da Posse, 1670 | Campo Grande | 1929f6b1-74d5-44b6-9e71-328c4b6de386 | 13685.108398 | 574.674628 | POLYGON ((-43.55307 -22.88299, -43.55280 -22.8... |
| 27 | 28 | Auto Viação Jabour | Avenida Santa Cruz, 12375 | Senador Vasconcelos | e943c8a4-dfb2-4f7c-b67a-4b4bdb244456 | 94896.239258 | 1423.323779 | POLYGON ((-43.53283 -22.89734, -43.53285 -22.8... |
| 28 | 29 | Auto Viação Jabour | Rua Viúva Dantas, 329 | Campo Grande | 8254eb2c-0376-4936-a4ae-c111fce9c7a3 | 3979.262695 | 346.157108 | POLYGON ((-43.55507 -22.90228, -43.55528 -22.9... |
| 29 | 30 | Viação Redentor; Transportes Futuro | Estrada do Gabinal, 1381/1395 | Freguesia de Jacarepaguá | f91b830f-553d-4351-96b7-397cc0d4686b | 104178.398438 | 1660.731777 | POLYGON ((-43.34836 -22.94965, -43.34757 -22.9... |
| 30 | 31 | BRT Rio | Rua Leonardo Villas Boas, lotes 4, 5 e 6. | Jacarepaguá | 7dba92d8-19fc-4aef-b7a5-f40d230d83da | 18406.614258 | 567.780286 | POLYGON ((-43.39234 -22.96432, -43.39156 -22.9... |
| 31 | 32 | Transportes Vila Isabel | Rua Viana Drumond, 45 | Vila Isabel | aa79d7e2-c9d6-47e2-9c29-60fa29ecb3ca | 14783.648438 | 692.504286 | POLYGON ((-43.25593 -22.92002, -43.25580 -22.9... |
| 32 | 33 | Transurb | Rua José dos Reis, 1136 | Engenho de Dentro | c1f80529-2b9a-4c8d-a72e-94355601030c | 53871.330078 | 991.943251 | POLYGON ((-43.29102 -22.88849, -43.29144 -22.8... |
| 33 | 34 | Transportes Campo Grande | Avenida Santa Cruz, 7825 | Senador Camará | 6df829be-2110-4d4d-982b-9b2c4523f2cb | 43366.984375 | 820.494132 | POLYGON ((-43.49665 -22.88348, -43.49594 -22.8... |
| 34 | 35 | Viação Nossa Senhora de Lourdes | Rua Salviano Valente, 85 | Penha Circular | 54fc8013-cf24-4ffd-b860-d649600b37b2 | 9588.633789 | 442.016671 | POLYGON ((-43.28656 -22.83721, -43.28650 -22.8... |
| 35 | 36 | Auto Viação Três Amigos | Rua Picuí, 505 | Bento Ribeiro | b9e53ce0-894b-48b2-bf30-15febd4ed765 | 22359.315430 | 623.228086 | POLYGON ((-43.35526 -22.86128, -43.35648 -22.8... |
| 36 | 37 | Transportes Barra | Rua Anália Franco, 150 | Vila Valqueire | 305e5926-294a-41f4-8636-ba78efc91756 | 31116.946289 | 968.735513 | POLYGON ((-43.35721 -22.87906, -43.35687 -22.8... |
itinerarios = gpd.read_file('Itinerários_de_Serviços_de_Ônibus_Urbanos_Regulares_2022-07-09-09-27-23.geojson')
itinerarios
| fid | servico | destino | consorcio | SHAPE__Length | geometry | |
|---|---|---|---|---|---|---|
| 0 | 1 | 006 | Castelo | Intersul | 9154.821469 | LINESTRING (-43.20780 -22.94566, -43.20789 -22... |
| 1 | 2 | 006 | Silvestre | Intersul | 9635.133534 | LINESTRING (-43.17484 -22.90895, -43.17593 -22... |
| 2 | 3 | 006 SN | Silvestre | Intersul | 16256.436708 | LINESTRING (-43.17484 -22.90895, -43.17593 -22... |
| 3 | 4 | 007 | Central | Intersul | 9131.921000 | LINESTRING (-43.20780 -22.94566, -43.20789 -22... |
| 4 | 5 | 007 | Silvestre | Intersul | 10003.052193 | LINESTRING (-43.19090 -22.90310, -43.19095 -22... |
| ... | ... | ... | ... | ... | ... | ... |
| 740 | 741 | 913 | Del Castilho | Internorte | 10339.555586 | LINESTRING (-43.23963 -22.83937, -43.23917 -22... |
| 741 | 742 | 810 | Pontal | Transcarioca | 28984.748797 | LINESTRING (-43.37423 -22.92340, -43.37421 -22... |
| 742 | 743 | 810 | Taquara | Transcarioca | 29217.745933 | LINESTRING (-43.51618 -23.01613, -43.51682 -23... |
| 743 | 744 | 386 SN | Candelária | Internorte | 41816.105119 | LINESTRING (-43.40598 -22.82630, -43.40562 -22... |
| 744 | 745 | 386 SN | Anchieta | Internorte | 41168.158983 | LINESTRING (-43.17827 -22.90073, -43.17829 -22... |
745 rows × 6 columns
pontos_parada = pd.read_csv('pontos_parada_data_rio_2022-07-09-09-27-23.csv')
pontos_parada = pontos_parada[pontos_parada.Modal == 'SPPO']
pontos_parada
| Unnamed: 0 | stop_name | stop_id | stop_desc | stop_lat | stop_lon | location_type | Modal | Corredor | Tipo de parada | ... | Endereço | MultiModal | id_sequencial | NumeroLinha | Vista | Horários | Existe o ponto? | parent_station | nome_ponto | route_type | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | Rua Sacadura Cabral 68 | 1001O00005C0 | NaN | -22.897510 | -43.183560 | 0 | SPPO | Não se aplica | Ponto convencional | ... | Rua Sacadura Cabral 68 | 22 | 5 | NÃO | NÃO | NÃO | NÃO | NaN | NaN | 3.0 |
| 1 | 1 | Avenida Barão de Tefé, oposto ao 99 | 1001O00006C0 | NaN | -22.897310 | -43.187370 | 0 | SPPO | Não se aplica | Ponto convencional | ... | AVENIDA BARAO DE TEFE 107 | 22 | 6 | NÃO | NÃO | NÃO | SIM | NaN | Avenida Barão de Tefé, oposto ao 99 | 3.0 |
| 2 | 2 | Avenida Venezuela , 153 | 1001O00008C0 | NaN | -22.895900 | -43.186380 | 0 | SPPO | Não se aplica | Ponto convencional | ... | Avenida Venezuela , 153 | 22 | 8 | NÃO | NÃO | NÃO | SIM | NaN | NaN | 3.0 |
| 3 | 3 | Barão de Tefé | 1001O00010C1 | NaN | -22.897488 | -43.186627 | 0 | SPPO | Não se aplica | Ponto convencional | ... | R. Sacadura Cabral | 22 | 10 | NÃO | NÃO | NÃO | SIM | NaN | Barão de Tefé | 3.0 |
| 11 | 11 | Rua Rivadávia Corrêa , 187 | 1002O00001C0 | NaN | -22.897970 | -43.195400 | 0 | SPPO | Não se aplica | Ponto convencional | ... | Rua Rivadávia Corrêa próximo ao 111-139 | 22 | 1 | NÃO | NÃO | NÃO | SIM | NaN | Rua Rivadávia Corrêa , 187 | 3.0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 8782 | 8782 | Av. Brasil, 34939. | 5162O00022C0 | NaN | -22.855105 | -43.487509 | 0 | SPPO | Não se aplica | Ponto convencional | ... | Avenida Brasil próximo ao 807 - Bangu | 22 | 22 | NÃO | NÃO | NÃO | SIM | NaN | Av. Brasil, 34939. | 3.0 |
| 8783 | 8783 | Estrada do Quafa próximo ao 448 | 5162O00023C9 | NaN | -22.853586 | -43.487932 | 0 | SPPO | Não se aplica | Ponto convencional | ... | Estrada do Quafa próximo ao 448 - Bangu | 22 | 23 | NÃO | NÃO | NÃO | SIM | NaN | Estrada do Quafa próximo ao 448 | 3.0 |
| 8784 | 8784 | Av. Santa Cruz, 7388. | 5163O00001C9 | NaN | -22.883206 | -43.491003 | 0 | SPPO | Não se aplica | Ponto convencional | ... | Avenida de Santa Cruz próximo ao 7454 - Senado... | 22 | 1 | NÃO | NÃO | NÃO | SIM | NaN | Av. Santa Cruz, 7388. | 3.0 |
| 8785 | 8785 | Av. Santa Cruz, 7938. | 5163O00002C9 | NaN | -22.882390 | -43.495660 | 0 | SPPO | Não se aplica | Ponto convencional | ... | Avenida de Santa Cruz próximo ao 7956 | 22 | 2 | NÃO | NÃO | NÃO | SIM | NaN | Av. Santa Cruz, 7938. | 3.0 |
| 8786 | 8786 | Ponto Final: Bairro Jabour :: Linha 396 | 5163O00003C0 | NaN | -22.880450 | -43.492840 | 0 | SPPO | Não se aplica | Ponto convencional | ... | Ponto final - Bairro Jabour | 22 | 3 | NaN | NaN | NaN | SIM | NaN | Bairro Jabour :: Linha 396 | 3.0 |
7704 rows × 42 columns
pontos_parada['MultiModal'].value_counts()
22 7539 22,40 136 22,40,41 9 22,41,40 6 22,41 5 40,22 5 30 1 30,22 1 22,23 1 22,30 1 Name: MultiModal, dtype: int64
pontos_parada['Tipo de parada'].value_counts()
Ponto convencional 7335 Ponto seletivado 278 Plataforma de Terminal 72 Terminal 19 Name: Tipo de parada, dtype: int64
pontos_parada['Existe o ponto?'].value_counts()
SIM 7183 NÃO 474 Name: Existe o ponto?, dtype: int64
gpsdata = pd.read_sql("SELECT * FROM gpsdata;", sqlite3.connect('G1-2022-03-23.db'))
gpsdata
| DATE | BUSID | LINE | LATITUDE | LONGITUDE | VELOCITY | |
|---|---|---|---|---|---|---|
| 0 | 03-23-2022 03:29:58 | A41274 | 110.0 | -22.87498 | -43.24185 | 3.0 |
| 1 | 03-23-2022 05:53:23 | D13229 | 803.0 | -22.88376 | -43.40751 | 13.0 |
| 2 | 03-23-2022 22:51:29 | A27684 | 548.0 | -22.92030 | -43.25637 | 0.0 |
| 3 | 03-23-2022 06:28:13 | C12018 | 2303.0 | -22.93741 | -43.65529 | 0.0 |
| 4 | 03-23-2022 14:59:12 | C47823 | 692.0 | -22.93891 | -43.33691 | 0.0 |
| ... | ... | ... | ... | ... | ... | ... |
| 352031 | 03-23-2022 03:40:08 | C44583 | 712.0 | -22.86526 | -43.35654 | 0.0 |
| 352032 | 03-23-2022 13:34:38 | A50009 | 645.0 | -23.00159 | -43.36511 | 0.0 |
| 352033 | 03-23-2022 20:41:48 | C47770 | 550.0 | -22.95164 | -43.34888 | 0.0 |
| 352034 | 03-23-2022 10:29:59 | C44654 | 638.0 | -22.86271 | -43.36589 | 0.0 |
| 352035 | 03-23-2022 05:04:05 | B32656 | 342.0 | -22.80699 | -43.32642 | 16.0 |
352036 rows × 6 columns
%%time
plt.figure(figsize=(21,13))
ax = plt.gca()
plt.plot(gpsdata.LONGITUDE, gpsdata.LATITUDE, '.', color='green')
itinerarios.plot(ax=ax, color='yellow')
plt.plot(pontos_parada.stop_lon, pontos_parada.stop_lat, '.', color='red')
garagens.plot(ax=ax, color='blue')
CPU times: user 856 ms, sys: 138 ms, total: 993 ms Wall time: 807 ms
<AxesSubplot:>
%%time
inter_map = folium.Map(location=[garagens.geometry.values[0].centroid.y,garagens.geometry.values[0].centroid.x], zoom_start=12)
garagens_group = folium.FeatureGroup(name="Garagens")
garagens_group.add_to(inter_map)
for _, i in garagens.iterrows():
label = ' / '.join(i[['operador', 'endereco', 'bairro']])
folium.Polygon(
np.array(i.geometry.boundary.coords)[:,::-1],
fill = True,
popup = label,
).add_to(garagens_group)
folium.Marker(
[i.geometry.centroid.y, i.geometry.centroid.x],
popup = label,
).add_to(garagens_group)
itinerarios_group = folium.FeatureGroup(name="Itinerários")
itinerarios_group.add_to(inter_map)
for _, i in itinerarios.iterrows():
folium.PolyLine(
np.array(i.geometry.coords)[:,::-1],
color = 'yellow',
popup = ' / '.join(i[['servico', 'destino', 'consorcio']]),
).add_to(itinerarios_group)
pontos_parada_group = folium.FeatureGroup(name="Pontos de Parada")
pontos_parada_group.add_to(inter_map)
for _, i in pontos_parada.iterrows():
folium.CircleMarker(
[i.stop_lat, i.stop_lon],
popup = i['stop_name'],
color = 'red',
fill=True,
radius = 2,
).add_to(pontos_parada_group)
folium.LayerControl().add_to(inter_map)
inter_map
CPU times: user 2 s, sys: 74.4 ms, total: 2.08 s Wall time: 2.07 s